package cn.rht.study.util.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class JedisUtil {
	
    @Autowired
    public JedisCache jedisCache;
    
    /**
     * 设置key -value 形式数据
     * @param key
     * @param value
     * @return
     */
    public long set(String key,String value){
    	JedisStringCache jedisStringCache = jedisCache.getJedisStringCache(key);
    	long set = jedisStringCache.set(value);
        return set;
    }

    /**
     * 设置 一个过期时间
     * @param key
     * @param value
     * @param timeOut 单位秒
     * @return
     */
    public long set(String key,String value,int timeOut){
    	JedisStringCache jedisStringCache = jedisCache.getJedisStringCache(key);
    	long set = jedisStringCache.set(value, timeOut);
        return set;
    }

    /**
     * 根据key获取value
     * @param key
     * @return
     */
    public String getByKey(String key){
    	JedisStringCache jedisStringCache = jedisCache.getJedisStringCache(key);
    	if(null != jedisStringCache)
    		 return jedisStringCache.get();
        return null;
    }
    
    public List<String> getLikeByKey(String keylike){
    	JedisStringCache jedisStringCache = jedisCache.getJedisStringCache(keylike);
    	if(null != jedisStringCache)
    		 return jedisStringCache.findLike(keylike);
        return null;
    }
    
    /**
     * 根据key删除
     * @param key
     */
    public long delByKey(String key){
    	JedisStringCache jedisStringCache = jedisCache.getJedisStringCache(key);
    	long remove = jedisStringCache.remove(key);
        return remove;
    }
    
    /**
     * 
     * @Title: incr   
     * @Description: 计数器 
     * @param userId
     * @return  long       
     * @throws
     */
    public long incr(String key){
    	JedisStringCache jedisStringCache = jedisCache.getJedisStringCache(key);
    	long incr = jedisStringCache.incr(key, 1);
		return incr;
    	
    }
    
    /**
     * 
     * @Title: sSet   
     * @Description: TODO(这里用一句话描述这个方法的作用)   
     * @param key
     * @param value
     * @return  long       
     * @throws
     */
    public long sSet(String key,String value){
    	JedisSetCache jedisSetCache = jedisCache.getJedisSetCache(key);
    	long set = jedisSetCache.setValue(key,value);
        return set;
    }
    /**
     * 
     * @Title: sCount   
     * @Description: TODO(这里用一句话描述这个方法的作用)   
     * @param key
     * @return  long       
     * @throws
     */
    public long sCount(String key){
    	JedisSetCache jedisSetCache = jedisCache.getJedisSetCache(key);
    	long count = jedisSetCache.count(key);
        return count;
    }
    
    public long sDelKey(String key){
    	JedisSetCache jedisSetCache = jedisCache.getJedisSetCache(key);
    	long count = jedisSetCache.delKey(key);
        return count;
    }
    
    public List<String> sFindAll(String key){
    	JedisSetCache jedisSetCache = jedisCache.getJedisSetCache(key);
    	List<String> list = jedisSetCache.findAll(key);
        return list;
    }
}
